package com.aos.erp.manager.remote.model;

import com.aos.erp.manager.enums.review.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class StudentInfo implements Serializable {

    private Long id;

    @ApiModelProperty("证件类型")
    private int sfType;

    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("出生日期")
    private String birthday;

    @ApiModelProperty("证件号码")
    private String certificatesNumber;


    @ApiModelProperty("国籍")
    private String country;


    @ApiModelProperty("身份证有效期 开始时间")
    private String effectedDate;


    @ApiModelProperty("身份证有效期 结束时间")
    private String expiredDate;

    @ApiModelProperty("性别")
    private String sex;

    @ApiModelProperty("学习类别（初次申领：0，增驾：1）")
    private DrivingType studyType = DrivingType.first;

    @ApiModelProperty("手机号")
    private String phone;


    @ApiModelProperty("准驾车型(申请车型ID)(来自字典表)")
    private Long carId;

    @ApiModelProperty("暂住证编号")
    private String stayAddreeNumber;


    @ApiModelProperty("邮箱")
    private String email;


    @ApiModelProperty("住所详细地址")
    private String addressDetailed;

    @ApiModelProperty("报名来源")
    private String registeredSource;


    @ApiModelProperty("登记住所详细地址")
    private String registeredResidence;

    @ApiModelProperty("学员来源(1：本地   2：外地")
    private Residence studentSource = Residence.local;

    @ApiModelProperty("学费")
    private BigDecimal registeredTuition;


    @ApiModelProperty("学员编号UUID")
    private String studentNumber;


    @ApiModelProperty("报名日期")
    private Date registeredTime;

    @ApiModelProperty("驾校ID")
    private Long driversId;

    @ApiModelProperty("推荐码")
    private String referralCode;


    @ApiModelProperty("备注")
    private String reason;


    @ApiModelProperty("创建时间")
    private Date created;

    @ApiModelProperty("最后修改时间")
    private Date updated;

    @ApiModelProperty("操作人ID")
    private Long operatorId;

    @ApiModelProperty("操作人名字")
    private String operatorName;

    @ApiModelProperty("传输状态")
    private Integer transferStatus;

    @ApiModelProperty("面签状态（0：审核不用过；1：审核通过）")
    private TnterviewStatus interviewStatus = TnterviewStatus.normal;

    @ApiModelProperty("学员状态")
    private StudentStatus status = StudentStatus.newenroll;


    /**
     * 互联网状态
     * 0:未提交（驾校录入学员资料未提交至车管所）；
     * 1006:待提交（分校提交学员资料至总校，但未提交至车管所）；
     * 112:已保存、总校已上传（总校已向车管所提交学员资料）；
     * 2:上传成功（总校提交资料成功上传至车管所）；
     * 3:上传失败（总校提交资料上传至车管所失败）
     */
    @ApiModelProperty("互联网状态")
    private IntegerStatus netStatus = IntegerStatus.onsubmit;

    /**
     * 内网业务状态
     * 4:办结（车管所审核学员资料成功，办结）；
     * 5:退办（车管所审核学员中资料失败，并退回）；
     * 6约考审核成功；
     * 7约考审核失败；
     * 8复核成功；
     * 9复核失败；
     * 10制证成功；
     * 11制证失败；
     * 12归档成功；
     * 13归档失败
     */
    @ApiModelProperty("内网业务状态")
    private InnerStatus innerStatus = InnerStatus.normal;

    /**
     * 是否绑定微信号  （0：否  1：是）
     */
    @ApiModelProperty("是否绑定微信号 ")
    private BindingWechat isBindingWechat = BindingWechat.no;

    @ApiModelProperty("微信openid ")
    private String wechatOpenid;

    @ApiModelProperty("证件类型")
    private String sfTypeName;

    @ApiModelProperty("准驾车型")
    private String carName;

    @ApiModelProperty("驾校名称")
    private String driversName;

    @ApiModelProperty("学员资料")
    private List<StudentFileInfo> listStudentPicture;
}
